// 分类模型
const { CategoryOne,CategoryTwo,CategoryThree, validateCategory } = require('../../../models/category');
// 统一数据返回类
const { DataReturn } = require('../../../common/returnclass');

/**
 * @api {Post} /categories 添加分类
 * @apiGroup Admin-Categories
 *
 * @apiParam {ObjectId} _id 分类父级id
 * @apiParam {String} title 分类名称
 * @apiParam {Number} cate_level 1为一级分类 2为一级分类 3为一级分类
 *
 * @apiSuccess {Number} code 状态码
 * @apiSuccess {Object} data 返回数据
 * @apiSuccess {String} msg  返回消息
 */
module.exports = async (req, res) => {
	// title 分类名称 _id 父级id cate_level 分类级别
	let { title, _id, cate_level } = req.fields;
	console.log(req.fields)
	// 数据格式校验
	const { error } = validateCategory(req.fields);
	// 格式不符合要求
	if (error) return DataReturn.getData(res,400,[],error.message);
	
	let category;
	if (cate_level == 1) {
		console.log(cate_level)
		// 查询分类
		// category = await CategoryOne.findOne({title});
		// 分类已存在
		// if (category) return DataReturn.getData(res,400,[],'分类已存在');
		// 创建分类对象
		category = new CategoryOne({title});
		// 保存分类
		category.save()
		.then(()=>{
			DataReturn.getData(res,200, [],'添加分类成功')
		}).catch(()=>{
			DataReturn.getData(res,400,[],'添加分类失败')
		})
		
	} else if (cate_level == 2) {
		console.log(cate_level)
		// 查询分类
		category = await CategoryTwo.findOne({title});
		// 分类已存在
		// if (category) return DataReturn.getData(res,400,[],'分类已存在');
		// 创建分类对象
		category = new CategoryTwo({title});
		// 保存分类
		// await category.save();
		category.save()
		.then(async ()=>{
			return await CategoryOne.updateOne({ _id },{ $push: { children: category._id }})
		}).then(()=>{
			DataReturn.getData(res,200, [],'添加分类成功')
		}).catch(()=>{
			DataReturn.getData(res,400,[],'添加分类失败')
		})
		
	} else if (cate_level == 3) {
		console.log(cate_level)
		// 查询分类
		// category = await CategoryThree.findOne({title});
		// 分类已存在
		// if (category) return DataReturn.getData(res,400,[],'分类已存在');
		// 创建分类对象
		category = new CategoryThree({title});
		// 保存分类
		category.save()
		.then(async ()=>{
			return await CategoryTwo.updateOne({_id },{ $push: { children: category._id }})
		}).then(()=>{
			DataReturn.getData(res,200, [],'添加分类成功')
		}).catch(()=>{
			DataReturn.getData(res,400,[],'添加分类失败')
		})
		
	}
};